<?php
/**
 * classe SqlInserir
 * Esta classe provê meios para manipulação de uma instrução de INSERT no banco de dados
 */
final class SqlInserir extends SqlInstrucao {

/**
 * Atribui valores à determinadas colunas no banco de dados que serão inseridas
 *
 * @param string $coluna coluna da tabela
 * @param string $valor valor a ser armazenado
 */
    public function setCampo($coluna, $valor) {
    // verifica se é um dado escalar (string, inteiro, ...)
        if ( is_scalar($valor) ) {
            if (is_string($valor) and (!empty($valor))) {
            // caso seja uma string
                
                $valor = addslashes($valor);
                $valor = str_replace("'", "''", $valor);
                
                $this->colunaValores[$coluna] = "'$valor'";
            } else if (is_bool($valor)) {
                // caso seja um boolean
                    $this->colunaValores[$coluna] = $valor ? 'TRUE': 'FALSE';
                } else if ($valor !== '') {
                // caso seja outro tipo de dado
                    $this->colunaValores[$coluna] = $valor;
                } else {
                // caso seja NULL
                    $this->colunaValores[$coluna] = "NULL";
                }
        }
    }

    /**
     * não existe no contexto desta classe, logo, irá lançar um erro ser for executado
     * 
     * esta classe foi comentada pelo Tiago em 18/10/2013
     */
//    public function setCriterio($criteria) {
//    // lança o erro
//        throw new Exception("Nao existe metodo setCriterio na class " . __CLASS__);
//    }

    /**
     * retorna a instrução de INSERT em forma de string.
     *
     * @return string
     */
    public function getInstrucao() {
        
        
        $this->sql  = "INSERT INTO {$this->tabela} (";

        // monta uma string contendo os nomes de colunas
        $colunas    = implode(', ', array_keys($this->colunaValores));

        // monta uma string contendo os valores
        $valores    = implode(', ', array_values($this->colunaValores));
        $this->sql  .= $colunas . ')';
        $this->sql  .= " VALUES ({$valores});";
        //print $this->sql;
      
        return $this->sql;
    }
}
?>
